﻿using Microsoft.EntityFrameworkCore;

namespace HelenServer.Migrator;

public partial class ZentaoDbContext : DbContext
{
    internal ZentaoDbContext(DbContextOptions<ZentaoDbContext> options)
        : base(options)
    {

    }

    public virtual DbSet<ZtAction> ZtAction { get; set; } = null!;
    public virtual DbSet<ZtBug> ZtBug { get; set; } = null!;
    public virtual DbSet<ZtDept> ZtDept { get; set; } = null!;
    public virtual DbSet<ZtFile> ZtFile { get; set; } = null!;
    public virtual DbSet<ZtGroup> ZtGroup { get; set; } = null!;
    public virtual DbSet<ZtHistory> ZtHistory { get; set; } = null!;
    public virtual DbSet<ZtLang> ZtLang { get; set; } = null!;
    public virtual DbSet<ZtModule> ZtModule { get; set; } = null!;
    public virtual DbSet<ZtProduct> ZtProduct { get; set; } = null!;
    public virtual DbSet<ZtProductplan> ZtProductplan { get; set; } = null!;
    public virtual DbSet<ZtRelease> ZtRelease { get; set; } = null!;
    public virtual DbSet<ZtStory> ZtStory { get; set; } = null!;
    public virtual DbSet<ZtStoryspec> ZtStoryspec { get; set; } = null!;
    public virtual DbSet<ZtUser> ZtUser { get; set; } = null!;
    public virtual DbSet<ZtUsergroup> ZtUsergroup { get; set; } = null!;

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.UseCollation("utf8_general_ci")
            .HasCharSet("utf8");

        modelBuilder.Entity<ZtAction>(entity =>
        {
            entity.Property(e => e.Action).HasDefaultValueSql("''");

            entity.Property(e => e.Actor).HasDefaultValueSql("''");

            entity.Property(e => e.ObjectId).HasDefaultValueSql("'0'");

            entity.Property(e => e.ObjectType).HasDefaultValueSql("''");
        });

        modelBuilder.Entity<ZtBug>(entity =>
        {
            entity.Property(e => e.AssignedTo).HasDefaultValueSql("''");

            entity.Property(e => e.Browser).HasDefaultValueSql("''");

            entity.Property(e => e.ClosedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.LastEditedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Module).HasDefaultValueSql("'0'");

            entity.Property(e => e.OpenedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Os).HasDefaultValueSql("''");

            entity.Property(e => e.Product).HasDefaultValueSql("'0'");

            entity.Property(e => e.Resolution).HasDefaultValueSql("''");

            entity.Property(e => e.ResolvedBuild).HasDefaultValueSql("''");

            entity.Property(e => e.ResolvedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Status).HasDefaultValueSql("'active'");

            entity.Property(e => e.ToStory).HasDefaultValueSql("'0'");

            entity.Property(e => e.Type).HasDefaultValueSql("''");
        });

        modelBuilder.Entity<ZtDept>(entity =>
        {
            entity.Property(e => e.Manager)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.Name).IsFixedLength();

            entity.Property(e => e.Parent).HasDefaultValueSql("'0'");
        });

        modelBuilder.Entity<ZtFile>(entity =>
        {
            entity.Property(e => e.AddedBy)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.Extension).IsFixedLength();

            entity.Property(e => e.ObjectType).IsFixedLength();

            entity.Property(e => e.Title).IsFixedLength();
        });

        modelBuilder.Entity<ZtGroup>(entity =>
        {
            entity.Property(e => e.Desc)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.Name).IsFixedLength();

            entity.Property(e => e.Role)
                .HasDefaultValueSql("''")
                .IsFixedLength();
        });

        modelBuilder.Entity<ZtHistory>(entity =>
        {
            entity.Property(e => e.Action).HasDefaultValueSql("'0'");

            entity.Property(e => e.Field).HasDefaultValueSql("''");
        });

        modelBuilder.Entity<ZtModule>(entity =>
        {
            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.Name)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.Parent).HasDefaultValueSql("'0'");

            entity.Property(e => e.Root).HasDefaultValueSql("'0'");

            entity.Property(e => e.Type).IsFixedLength();
        });

        modelBuilder.Entity<ZtProduct>(entity =>
        {
            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.Status).HasDefaultValueSql("''");
        });

        modelBuilder.Entity<ZtProductplan>(entity =>
        {
            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.Parent).HasDefaultValueSql("'0'");
        });

        modelBuilder.Entity<ZtRelease>(entity =>
        {
            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.Name).HasDefaultValueSql("''");

            entity.Property(e => e.Product).HasDefaultValueSql("'0'");

            entity.Property(e => e.Status).HasDefaultValueSql("'normal'");
        });

        modelBuilder.Entity<ZtStory>(entity =>
        {
            entity.Property(e => e.AssignedTo).HasDefaultValueSql("''");

            entity.Property(e => e.ClosedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.FromBug).HasDefaultValueSql("'0'");

            entity.Property(e => e.LastEditedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Module).HasDefaultValueSql("'0'");

            entity.Property(e => e.OpenedBy).HasDefaultValueSql("''");

            entity.Property(e => e.Pri).HasDefaultValueSql("'3'");

            entity.Property(e => e.Product).HasDefaultValueSql("'0'");

            entity.Property(e => e.Stage).HasDefaultValueSql("'wait'");

            entity.Property(e => e.StagedBy).IsFixedLength();

            entity.Property(e => e.Status).HasDefaultValueSql("''");

            entity.Property(e => e.Version).HasDefaultValueSql("'1'");
        });

        modelBuilder.Entity<ZtUser>(entity =>
        {
            entity.Property(e => e.Account)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.ClientStatus).HasDefaultValueSql("'offline'");

            entity.Property(e => e.Deleted).HasDefaultValueSql("'0'");

            entity.Property(e => e.Dept).HasDefaultValueSql("'0'");

            entity.Property(e => e.Email)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.Gender).HasDefaultValueSql("'f'");

            entity.Property(e => e.Join).HasDefaultValueSql("'0000-00-00'");

            entity.Property(e => e.Realname).HasDefaultValueSql("''");

            entity.Property(e => e.Role)
                .HasDefaultValueSql("''")
                .IsFixedLength();
        });

        modelBuilder.Entity<ZtUsergroup>(entity =>
        {
            entity.Property(e => e.Account)
                .HasDefaultValueSql("''")
                .IsFixedLength();

            entity.Property(e => e.Group).HasDefaultValueSql("'0'");
        });

        this.OnModelCreatingPartial(modelBuilder);
    }

    partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}